A Practical Approach to Verification of Recursive Programs in Theorema extended abstract

نویسندگان

  • Nikolaj Popov
  • Tudor Jebelean
چکیده

We report work in progress concerning the theoretical basis and the implementation in the Theorema system of a methodology for the generation of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. Proving total correctness is achieved by proving separately partial correctness and then termination. We develop a pattern for proving partial correctness properties of programs which have simple functional recursive definitions, and we discuss how this can be extended to recursive programs having multiple recursive calls. The method for proving partial correctness is based on Scott Induction, from which we extract the essential features. Furthermore we develop a pattern for proving termination of simple recursive functional programs, uder the assumption that total correctness of all the auxiliary functions used in the program definition is provided. Combining the verification conditions from the two parts (partial correctness and termination) we construct verification conditions for proving total correctness. While proving [partial] correctness of non-recursive procedural programs is quite well understood, for instance by using Hoare Logic [3], [5], there are relatively few approaches to recursive procedures (see e.g. [7] Chap. 2). ∗The program verification project in the frame of e-Austria Timişoara is supported by BMBWK (Austrian Ministry of Education, Science and Culture), BMWA (Austrian Ministry of Economy and Work) and MEC (Romanian Ministry of Education and Research). The Theorema project is supported by FWF (Austrian National Science Foundation) – SFB project P1302.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Experimental Program Verification in the Theorema System

We describe practical experiments of program verification in the frame of the Theorema system. This includes both imperative programs (using Hoare logic), as well as functional programs (using fixpoint theory). For a certain class of imperative programs we are able to generate automatically the loop invariants and then verification conditions, by using combinatorial and algebraic techniques. Ve...

متن کامل

Practical Aspects of Imperative Program Verification in Theorema Presented at 5 International Workshop on Symbolic and Numeric Algorithms for Scientific Computing

Approaching the problem of imperative program verification from a practical point of view has certain implications concerning: the style of specifications, the programming language which is used, the help provided to the user for finding appropriate loop invariants, the theoretical frame used for formal verification, the language used for expressing generated verification theorems as well as th...

متن کامل

Practical Program Verification by Forward Symbolic Execution: Correctness and Examples

We present the theoretical aspects and a prototype implementation in the Theorema system of a method for the verification of recursive imperative programs. The method is based on forward symbolic execution and functional semantics and generates first order verification conditions for the total correctness which use only the underlying theory of the program. All verification conditions are gener...

متن کامل

A Prototype Environment for Verification of Recursive Functional Programs

We present an experimental prototype environment for defining and verifying recursive functional programs, which is part of the Theorema system. A distinctive feature of our approach is the hint on ”what is wrong” in case of a verification failure. The prototype is designed in order to improve the education of future software engineers by exposing them to successful examples of using formal met...

متن کامل

Verification Environment in Theorema

We present a verification environment for imperative programs (using Hoare logic) and for functional programs (using fixpoint theory) in the frame of the Theorema system (www.theorema.org). In particular, we discuss some methods for finding the invariants of loops and specifications of auxiliary tail recursive functions. These methods use techniques from (polynomial) algebra and combinatorics, ...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2003